前言
当我们远程登录服务器时,需要输入用户名和密码,而且服务器默认的登录端口是22默认的登录用户是拥有最高权限的root。这是人尽皆知的东西。但是为了服务器安全我们会选择两种情况处理。
1. 采用密钥的方式登录
2. 就是修改ssh登录端口以及新建一个用户用于远程登录。
不管采用哪种方式都必须要禁用超级管理员root登录。
查看本机是否有安装ssh服务yum list installed | grep ssh
如图所示就已经安装好了。
如果没有安装执行 yum install openssh-server 安装即可。
新增用户
在禁用root登录之前先要创建一个其他用户,不然在没有其他用户的情况下把root禁止登陆后就GG了,如果已经有其他用户就可以看忽略此处。
adduser youUserName
passwd youUserName
列如:
adduser testuser创建一个 用户名为:testuser的用户passwd testuser为testuser 这个用户设置密码。

输入密码,此处即使输入了也是看不到密码的。所以不要以为没输进去。然后回车确认后,会让你再次输入密码确认。
到这里创建用户就成功了。
禁用root用户登录
其实禁用root用户登录就很简单
使用vim或者vi修改ssh的配置文件。
Tip: 按i进入编辑模式,编辑完成后按 ESC 退出编辑模式,然后 :wq 保存并退出。如果编辑过程中出错。可以不保存强制退出:首先按 Esc 退出编辑模式,然后 :q! 即可强制退出
vim /etc/ssh/sshd_config #注意这里是`sshd_config` 而不是`ssh_config` 别搞错了

找到 #PermitRootLogin yes 的地方。
把前面的 # 号去掉,然后 yes --> no 把 yes 改为 no ,表示禁止root登录 。

然后保存并退出vim。
然后重启sshsystemctl restart sshd就可以了。
可以试试用root已经无法远程登录了。
修改ssh登录端口
以下操作都需要 root 权限。如果是用非root用户登录的需要先切换为root用户
su root 然后输入root用户密码就可以了

修改ssh登录端口需要用到SELinux的管理工具 semanage 。先执行一下 semanage port -l | grep ssh 查看当前的ssh端口。
如果提示bash: semanage: command not found 就先安装 semanage。
yum provides semanage看到需要安装其依赖工具包 policycoreutils-python
yum install policycoreutils-python 安装依赖包。
安装完成之后再次执行semanage port -l | grep ssh 就可以看到当前的ssh端口

向 SELinux 中添加自定义ssh端口: semanage port -a -t ssh_port_t -p tcp 10086
查看端口是否添加成功 semanage port -l | grep ssh
可以看到此处多了一个我自己添加的10086端口,已经完成一大半了。
然后修改ssh配置文件,修改ssh登录端口
vim /etc/ssh/sshd_config

找到 #Port 22

把前面的#号去掉,并添加一行 自定义的端口,此出把22端口也打开是为了防止端口设置出错或者防火墙没开发端口,等下就登录不进来了。等最后设置成功后再把Port 22注释掉。

保存退出即可。
然后重启ssh服务
systemctl restart sshd。
最后查看防火墙是否打开自定义的ssh端口
打开防火墙端口
由于CentOS7默认的的防火墙为firewall而不是iptables
向防火墙中添加端口: firewall-cmd --zone=public --add-port=10086/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新加载防火墙规则: firewall-cmd --reload 每次新增获取删除端口后都需要执行,否则不生效
查看防火墙已开发的端口:firewall-cmd --zone=public --list-ports

试试使用非22端口能否成功?如果可以那就已经大功告成了。已经开放了非22端口 ssh 登录了。
等等。不是说好了禁用 22端口登录吗?
那还不简单,使用防火墙把22端口禁掉不就好了吗
firewall删除端口:firewall-cmd --zone=public --remove-port=22/tcp --permanent
firewall-cmd --reload 重新加载防火墙
然后再执行firewall-cmd --zone=public --list-ports。看看22端口是不是不见了。然后再用22端口登录试试,你就会发现已经无法使用22端口登录了。
或者 把 /etc/ssh/sshd_config中的 Port 22 这行注释掉,然后重启 sshd 服务就好了。